package com.cn.exception.hm;

/**
 * Throwable成员方法
 * 1. public String getMessage(): 返回此 throwable 的详细消息字符串
 * 2. public String toString(): 返回此可抛出的简短描述
 * 3. public void printStackTrace(): 把异常的错误信息输出在控制台
 *
 *
 * 方法	        作用	                                                            返回值示例	常见用途
 * getMessage()	获取异常的描述信息。	"This is an error message"	                提取异常信息，提供用户友好的提示。
 * toString()	返回异常的简要描述，包括类名和描述信息（message）。	                "java.lang.Exception: This is an error message"	简单记录异常类型和信息。
 * printStackTrace()	打印异常的详细堆栈信息，包括类名、描述信息以及异常发生的调用栈。	堆栈详细信息	调试和日志记录，
 *
 * 使用场景建议
 * 	•	getMessage()：当只需要异常描述信息时使用，例如向用户显示提示。
 * 	•	toString()：当需要记录异常的类型和简要信息时使用，例如写入日志。
 * 	•	printStackTrace()：用于调试和分析问题，特别是需要完整的调用堆栈时。
 */
public class Exception_05_ThrowableMemberMethods2 {

    /*
    3. printStackTrace()
	•	作用：
	•	将异常的详细堆栈信息输出到标准错误流（System.err）。
	•	堆栈信息包括异常的类名、message 以及异常发生的调用栈（从异常发生处到调用堆栈的每一层）。
	•	默认输出到控制台，但也可以通过参数指定其他输出流。
	•	返回值：
	•	无返回值。
	•	常见用途：
	•	用于调试和记录详细的异常信息。
     */
    public static void main(String[] args) {
        //getMessageDemo();
        //toStringDemo();
        //printStackTraceDemo();
    }

    private static void printStackTraceDemo() {
        try {
            throw new Exception("This is an error message");
        } catch (Exception e) {
            System.out.println("printStackTrace():");
            e.printStackTrace();
        }
    }


    /*
    2. toString()
	•	作用：
	•	返回异常的简要描述，包括异常的类名和 getMessage() 返回的详细描述信息。
	•	格式为：<异常类名>: <message>。
	•	返回值：
	•	如果 message 是 null，只返回异常的类名。
	•	如果 message 不为 null，返回格式为 <类名>: <message>。
	•	常见用途：
	•	通常用于简单地描述异常信息，而不需要查看堆栈信息。
     */
    private static void toStringDemo() {
        try{
            throw new Exception("This is an error message");
        }catch(Exception e){
            System.out.println("toString(): "+e.toString());
        }
    }



    /*
    1. getMessage()
	•	作用：
	•	返回异常的详细描述信息。
	•	这个信息通常在创建异常对象时，通过构造方法传递（例如 new Exception("Error message")）。
	•	返回值：
	•	如果创建异常时提供了描述信息（message），则返回该信息。
	•	如果没有提供描述信息，返回 null。
	•	常见用途：
	•	用于捕获异常时，提取异常的描述信息。
     */
    private static void getMessageDemo() {
        try{
            throw new Exception("This is an error message");
        }catch (Exception e){
            System.out.println("getMessage(): "+e.getMessage());
        }
    }


}
